/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Source;

import java.sql.ResultSet;
import java.util.LinkedList;
/**
 *
 * @author JRN
 */
public class Pedido_DAO {

     private String sentenciaSQL;
    ConexionDB conexion;
    LinkedList<Pedido_POJO> listaDetalle = new LinkedList<Pedido_POJO>();
    ResultSet resultado;

    public Pedido_DAO(ConexionDB pConexion) {

        conexion = pConexion;
    }

     //Estructura Pedido
        //idPedido int PRIMARY KEY,
        //statusOrden varchar(45),
        //fechaIngreso timestamp,
        //descripcion varchar(100),
        //fechaPago timestamp,
        //statusPago boolean,
        //idUsuario int REFERENCES Usuario(idUsuario),
        //idShipping int REFERENCES Shipping(idShipping)

    /**
     * Retorna el pedido especificado
     * @param pIdPedido id del pedido que se desea
     * @return
     */
    public LinkedList<Pedido_POJO> obtenerReg(int pIdPedido) {

        sentenciaSQL = "SELECT * FROM Pedido WHERE idPedido=" + pIdPedido;

        try {
            resultado = conexion.getResultSet(sentenciaSQL);

            if (resultado.next()) {
                Pedido_POJO objPedido = new Pedido_POJO();

                objPedido.setIdPedido(Integer.parseInt(resultado.getString("idPedido")));
                objPedido.setStatusOrden(resultado.getString("statusOrden"));
                objPedido.setFechaIngreso(resultado.getString("fechaIngreso"));
                objPedido.setDescripcion(resultado.getString("descripcion"));
                objPedido.setFechaPago(resultado.getString("fechaPago"));
                objPedido.setStatusPago(Boolean.parseBoolean(resultado.getString("statusPago")));
                objPedido.setIdUsuario(Integer.parseInt(resultado.getString("idUsuario")));
                objPedido.setIdShipping(Integer.parseInt(resultado.getString("idShipping")));

                listaDetalle.add(objPedido);


            }

        } catch (Exception ex) {
            System.out.println("error " + ex);
            return null;
        }

        return listaDetalle;
    }

    /**
     * Retorna todos los pedidos de un usuario
     * @param idUsuario id del usuario el cual se quiere obtener sus pedidos
     * @return
     */
    public LinkedList<Pedido_POJO> obtenerReg_porUsuario(int idUsuario) {

        sentenciaSQL = "SELECT * FROM Pedido WHERE idUsuario=" + idUsuario;

        try {
            resultado = conexion.getResultSet(sentenciaSQL);

            if (resultado.next()) {
                Pedido_POJO objPedido = new Pedido_POJO();

                objPedido.setIdPedido(Integer.parseInt(resultado.getString("idPedido")));
                objPedido.setStatusOrden(resultado.getString("statusOrden"));
                objPedido.setFechaIngreso(resultado.getString("fechaIngreso"));
                objPedido.setDescripcion(resultado.getString("descripcion"));
                objPedido.setFechaPago(resultado.getString("fechaPago"));
                objPedido.setStatusPago(Boolean.parseBoolean(resultado.getString("statusPago")));
                objPedido.setIdUsuario(Integer.parseInt(resultado.getString("idUsuario")));
                objPedido.setIdShipping(Integer.parseInt(resultado.getString("idShipping")));

                listaDetalle.add(objPedido);


            }

        } catch (Exception ex) {
            System.out.println("error " + ex);
            return null;
        }

        return listaDetalle;
    }




    public boolean guardarReg(int idPedido, String statusOrden, String fechaIngreso, String descripcion, String fechaPago, boolean statusPago, int idUsuario, int idShipping) {


        sentenciaSQL = "INSERT INTO Pedido(idPedido,statusOrden,fechaIngreso,descripcion,fechaPago,statusPago,idUsuario,idShipping) VALUES ("
                           + idPedido +",'"+ statusOrden + "','" + fechaIngreso + "','" + descripcion + "','"+fechaPago+"',"+statusPago+","+idUsuario+","+idShipping+")";

        try {
            conexion.executeQuery(sentenciaSQL);
            return true;


        } catch (Exception ex) {
            System.out.println("error " + ex);
            return false;
        }

    }


    
    public boolean actualizarReg(int idPedido, String statusOrden, String fechaIngreso, String descripcion, String fechaPago, boolean statusPago, int idUsuario, int idShipping) {

        sentenciaSQL = "UPDATE Pedido SET "
                    + "statusOrden = '"+statusOrden+"',"
                    + "fechaIngreso = '"+fechaIngreso+"',"
                    + "descripcion = '"+descripcion+"',"
                    + "fechaPago = '"+fechaPago+"',"
                    + "statusPago = "+statusPago+","
                    + "idUsuario = "+idUsuario+","
                    + "idShipping = "+idShipping
                    + "  WHERE idPedido = " + idPedido;


        try {
            conexion.executeQuery(sentenciaSQL);

            return true;

        } catch (Exception ex) {
            System.out.println("error " + ex);
            return false;
        }
    }






     public boolean eliminarReg (int idPedido){

        sentenciaSQL = "DELETE FROM Pedido WHERE idPedido="+idPedido;

        try {
            conexion.executeQuery(sentenciaSQL);
            return true;

        } catch (Exception ex) {
            System.out.println("error " + ex);
            return false;
        }

    }

}
